#include "SendConfig.h"
#include <cjson/cJSON.h>
#include <stdio.h>
extern gchar *gatewayIp;
// 回调函数，打印一下服务器相应的数据
size_t configRespCallback(void *contents, size_t size, size_t nmemb, void *userp)
{
    size_t realsize = size * nmemb;
    // 这里可以处理获取到的数据，比如存储到文件或者其他操作
    char *result = (char *)contents;
    // 先拿到整个json字符串
    cJSON *root = cJSON_Parse(result);
    // 判断一下是否非空
    if (root != NULL)
    {
        // 分别解析哪个字段的数据
        cJSON *successRoot = cJSON_GetObjectItemCaseSensitive(root, "success");
        if (cJSON_IsTrue(successRoot))//判断一下
        {
             printf("配置成功\n");
        }else{
            cJSON *codeRoot = cJSON_GetObjectItemCaseSensitive(root,"code");
            cJSON *messageRoot = cJSON_GetObjectItemCaseSensitive(root,"message");   
            printf("配置失败： code=%d ,message=%s \n",codeRoot->valueint,messageRoot->valuestring);
        }
    }

    return realsize;
}

/*
    ip：是动态的 （通过读取配置文件 能够获取）
    sn: 是动态   ()
    地址：动态    (通过读取配置文件 能够获取)
*/

void sendConfigRequest(gchar *sn)
{
    // 一定要自己重新取配置文件里拿ip和location，因为传过来的数据如果已经改了，那么地址就是不对的
    // 拿到之后再把配置文件里的ip和location 改了
    // 正常的去文件里面读取
    // 把数据存储到文件中：glib
    GKeyFile *keyFile = g_key_file_new();
    // 加载文件读取配置文件存储位置
    if (!g_key_file_load_from_file(keyFile, "./config.ini", G_KEY_FILE_NONE, NULL))
    {
        g_warning("load config.ini error!");
        // return -1;
    }
    // 读取里面的路径
    gchar *path = g_key_file_get_string(keyFile, "config", "devinfo_path", NULL);

    GKeyFile *devFile = g_key_file_new();
    // 如果有就打开这个配置文件
    if (!g_key_file_load_from_file(devFile, path, G_KEY_FILE_NONE, NULL))
    {
        g_warning("load config.ini error!");
        return;
    }
    gatewayIp = g_key_file_get_string(devFile, "config", "gatewayIp", NULL);
    gchar *location = g_key_file_get_string(devFile, "config", "location", NULL);
    g_key_file_free(devFile);
    g_key_file_free(keyFile);
    char* urlFormatStr="http://%s/config.json?sn=%s&location=%s";
    char *url = calloc(1,100);
    //替换动态参数
    sprintf(url,gatewayIp,sn,location);
    printf("%s\n",url);
    //核心调用一个发送请求的函数
    sendGetRequest(url,configRespCallback);
}